﻿///------------------------------------
/// ControlCore.Device IDevice.cs
///------------------------------------
namespace ControlCore.Device
{
    using System.Windows;

    /// <summary>
    /// Interface for device
    /// </summary>
    public interface IDevice
    {
        /// <summary>
        /// Get value if device is initialized
        /// </summary>
        bool IsInitialized { get; }

        /// <summary>
        /// Initialise Device. Should perform all set ups and connection test.
        /// </summary>
        void Init();

        /// <summary>
        /// Close and clean up.
        /// </summary>
        void Close();

        /// <summary>
        /// Send command to device
        /// </summary>
        /// <param name="deviceCommand">Command type</param>
        /// <param name="value">Command value</param>
        void SendCommand(ControlCommand deviceCommand, double value);

        /// <summary>
        /// Visual output of the device.
        /// </summary>
        FrameworkElement DeviceOutput { get; }
    }
}
